נסקור כאן 6 פריימוורקים:
- YII
- Laravel
- Codeigniter
- Zend Framework 2
- Symfony 2
- Phalcon
הסקירה תהיה בעיקר לגבי היתרונות, החסרונות,
לפעמים יש סטיגמות בקהילה ה php לגבי פרימוורקים מסויימים,
אז חשוב שבאמת נכיר ונדע מה הכלים שעומדים לרשותינו לפרוייקט הבא שנבצע.
הקדמה
שלום לכל לוחמי ה php, לפי המסורת של האתר (מסורת שמתחילה ברגע זה),
נסקר פעם בשנה את הפרימוורקים המשמעותיים כרגע.
יצאו הרבה גירסאות חדשות, ובכלל הרבה התפתחויות בקהילה,
החל מגירסאות php חדשות, ועד ל unit / acceptance test שנהיו מאוד מקובלים בקהילה, בפרויקטים,
וקיבלו סטנדרטים משלהם.
עם כל התתפתחויות הללו תמיד חשוב לשמור אצבע על הדופק,
בין השאר בעולם הפרימוורקים, להיות מקובע לפרימוורק אחד שמכירים טוב, זה נחמד
לפעמים ה לחקור את הדברים החדשים ואולי לגלות זהב.
נסקור כאן 6 פריימוורקים:
- YII
- Laravel
- Codeigniter
- Zend Framework 2
- Symfony 2
- Phalcon
הסקירה תהיה בעיקר לגבי היתרונות, החסרונות,
לפעמים יש סטיגמות בקהילה ה php לגבי פרימוורקים מסויימים,
אז חשוב שבאמת נכיר ונדע מה הכלים שעומדים לרשותינו לפרוייקט הבא שנבצע.
בקצרה (כי חייבים), למה פרימוורקים?
אם אתה חדש בעולם ה php, תלוי בכמה חדש, סביר להניח שתרצה ללמוד עוד דברים לבד
לפני שתפקיד את המערכת שלך על בסיס קוד זר, שאתה לא בטוח כיצד הוא עובד.
אם אתה כבר מבין תכנות מונחה עצמים (ואם לא לאלכס יש פיתרון בקרוב),
ושמעת על MVC ומתוך חששות מסויימים החלטת לכתוב פרימוורק משלך ולא להשתמש בקיימים
זה גם בסדר, תמיד נחמד ללמוד.
בסופו של דבר, כשמגיעים למצב שמרגישים נוח עם השפה, וכבר לא רוצים לבזבז זמן על לכתוב קוד שאחרים כבר כתבו, מתחילים לחשוב על פרימוורקים.
כל מה שחשוב לנו זה שהפרוייקט יהיה מהיר, מודולרי עם קוד (ספרותי?( עד כמה שאפשר ופשוט.
בדרך זו ייבחן המודל העיסקי, כמה שיותר מהר, עם מוצר שלפחות עובד.
אבל ללא ספק מהירות ופשוטות הם כלי מנחה.
זה הכל.
לא, ביצועים לא מעניינים אותי,
ז״א אם תכתבו קוד שלוגית הוא רע וצורך משאבים לחינם, זה אמור לעניין אתכם מאוד,
אבל אני מדבר על להחליף משאבים בתמורה לקלות הפיתוח.
בעוד שאני יכול לקחת 150 ש״ח וללכת לקנות 8 גי׳גה ראם בחנות,
יעלה לי הרבה יותר שעות מתכנת (100 שח לשעה במקרה הזול מאוד)
שיחסכו 5 מגהבייט ראם במערכת, לא שווה את זה,
לא ארחיב על זה, אבל להיות בזבזני במשאבים (בהנחה שהקוד לא רע לוגית) על חשבון נוחות ופשוטות עבור המפתח שווה את זה לגמריי.
(בעתיד משפרים, תהליך שנקרא normalize - denormalize)
ובכל זאת, לאלא שבונים את גוגל הבאה כאן וחשוב להם הביצועים גם הם ימצאו פיתרון במאמר זה,
אני אישית ניסיתי את כל הפרימוורקים הכתובים כאן למטה,
חלק נכנסתי אליהם לעומק, חלק ממש על קצה המזלג,
אבל כשאני נאלץ לבחור פרימוורק לפרוייקט,
חשוב לי לדעת את היתרונות והחסרונות היחסיים ומה הפרימוורק שמתאים לפרוייקט הספציפי הזה.
רק שתדעו
הרבה פרימוורקים באים עם מערכת ORM מובנית, ומערכת טמפלייטים מובנית,
בעוד אני תופס מעצמי אדם מאוד פתוח לטכנולוגיות חדשות,
אני מאוד מעודד לא להשתמש בORM, שליטה מלאה בשאילתות חשובה מאוד במקרה הזה,
אבל אם באמת דרושה מהירות משמעותית עבור דמו כלשהו, אז בסדר, רק לעטוף את זה בכל זאת.
ולא לבנות על זה לגמריי.
צוואר הבקבוק הכי גדול היום הוא הדאטה, ובוא נתחיל איתו ברגל ימין.
בנוסף, מערכת טמפלייטים שבאה מובנית כמעט בכל פרימוורק, לצערי לפעמים קשה למצוא דוקומנטציה
כיצד להימנע מהם, אבל אני מאוד ממליץ פשוט לא להשתמש במנוע טמפלייטים,
והדיון על 2 התוספים הנ״ל יכול להמשיך להיות ארוך,
אך אילו מסקנות שלי שנכתבו בדם.
עוד דבר,
חשוב לא פחות הוא התמיכה במערכת,
מערכת שנמצאת עם אותה גירסא כבר כמה שנים, אני יכול לסמוך עליה,
שגם הדוקומנטציה שלה תמיד תהיה בהישג יד,
ולא תיעלם אי שם, כי הפרוייקט שלי נועד לשרוד שנים רבות,
מתוך זה גם התמיכה של הקהילה והמודולים, כי בעתיד לשדרג לגירסא חדשה, לפעמים קשה, ולפעמים שכתבו הכל מחדש
ובמערכות גדולות זה לא פשוט בכלל אפילו לשדרג גירסא (הזכרנו טסטים?)
ישנם עוד פרמטרים שהיו חשובים לי,
אבל חלאס לאכול לכם ת׳ראש, בואו נתחיל.
YII
הבחור הקליל
היתרונות
מאוד נוח למתחילים,
נחשב כפרימוורק עם עקומת למידה מאוד קלה, והוא אכן כזה,
הרבה ספרים ומדריכי וידאו נעשו עליו,
ואם מעולם לא השתמשתם בפרימוורק זה בהחלט הדבר עבורכם.
יציבות ותמיכה
גירסאות 1.x כבר נמצאות איתנו הרבה זמן, האמת, כבר מדצמבר 2008!
זה בהחלט מאוד מרשים, כבר כמעט 5 שנים עם אותה גירסא,
בהחלט מערכת שאפשר לסמוך עליה לטווח הארוך,
וראיתי כבר חברות סטארטאפ מפורסמת בישראל שמשתמשת בו
(בניהם get taxi המפורסמת, שהצד שרת שלה כתוב בYII ואני מכיר עוד כמה)
מודולים והרחבות
מאוד קל להתקין הרחבות שונות,
אני לא הכי אוהב את הדרך שזה נעשה, אבל באופן כללי זה די פשוט, ויש המון הרחבות,
בכלל שהגירסא יציבה כל כך הרבה שנים, תוכלו למצוא המון דברים שמתאימים לכם.
וכמובן זה חוסך המון זמן.
ביצועים
אחת המערכות היציבות מבחינת ביצועים, ובאופן כללי ביצועים מעולים שהם בהחלט שיקול עבור רבים לטובתה.
החסרונות
אין namespace שזה לא כזה חיסרון למי שלא בונה מערכת ענקית,
אבל למי שכן, שייקח בחשבון,
לדעתי תמיד צריך אבל אפשר להתווכח עם זה,
עניין היציבות בגירסאות, אז אפשר להגיד שהם הגזימו,
בהרבה בחינות הם היו מאחור, מחסור בטסטים מובנים,
ללא תמיכה בcomposer, כל אלו הביאו לנטישה של משתמשים ותיקים,
כאלה שחיכו לגירסא 2, וחיכו… וחיכו..
ולא ברור מתי תצא הגירסא היציבה, למרות שמבדיקה שלי, גם היא לא פתרה את כל הבעיות,
ודילגו על לא מעט דברים.
ובכל זאת. הם לא התאימו את עצמם לעידן החדש במהירות הדרושה.
אין באנדלים וגם לא בתיכנון הלאה, יש הרחבות שאפשר להתקין, אבל זה לא אותו דבר.
סיכום
מעולה למתחילים,
יאללה כבר גירסא 2, יש להם עוד הרבה עבודה כדי שתהיה מושלמת,
חבל שלא יהיו באנדלים, אבל אחלה פרימוורק לפרוייקטים קטנים - בנוניים.
אחת הקהילות שגדלה בקצב המהיר ביותר, עם הסיכוי גבוהה בעתיד להפוך לאחד הפרימוורקים החזקים
ומי שמחפש ביצועים ימצא אותם כאן.
ציון סופי: 7/10
Laravel
הבחור החדש והאופנתי
יתרונות
- הכי נוח למתחילים
לדעתי נח יותר מyii, פשוט מאוד והקוד מאוד נקי ואלגנטי.
באמת היה תענוג להוסיף לה קוד,
ובהחלט מתאים לפרוייקטים בכל הגדלים
חדישה ותומכת ב..הכל!
מאוד מודולרית, כל הדברים הכי חדשים ומתקדמים בעולם ה php מיהרו לשלב שם.
התמיכה ב composer מושלמת, וקל מאוד להתקין את הפרימוורק איתה.
תגלו גם שהיא מאמצת מספר סיפריות מפרימוורקים אחרים, מה טוב.
קהילה
קהילה צומחת במהירות, והפרימוורק מתחיל להיות מואמץ בהרבה קהילות,
והבאז סביבו ברשת רק הולך וגדל,
בעיקר בגלל הסיבות שהזכרתי למעלה, ובהחלט מצדיק את המוניטין
דוקומנטציה קלה ופשוטה
כל אחד יכול להתחיל בקלות רבה, עם דוקומנטציה מתועדת היטב,
יצאו הרבה ספרים לאחרונה אודות laravel 4, ספרים לא ארוכים בכלל שיעזרו לכם להתחיל.
מודולרית
מאוד מאוד מודולרית, לעומת laravel 3 תמכה יפייפה בבאנדלים, שגם אותם באנדלים הם אפליקציות ב laravel,
בגירסא 4 הם תומכים בבאנדלים שלא באו בהכרח מתוך לארוול, ולמרות שזה מעט סיבך את המערכת, זה יצר דינאמיות אדירה.
חסרונות
זה בהחלט אחד הפרימוורקים החזקים והמומלצים היום,
אך דבר אחד הפריע לי, הפריע לי מאוד.
התמיכה
לארוול הוציאו 3 גירסאות בשנה וקצת האחרונים, כן 3!! מרווח של חודשים ספורים בין גירסא לגירסא..
בעוד גירסא 2 יצאה בנובמבר 2011, גירסא 3 יצאה במרץ 2012, רק 4 חודשים אחרי!
היום לא תמצאו בכלל את הדוקומנטציה של גירסא 2!
גירסא 4 יצאה בספטמבר האחרון, רק לפני חודשיים, וכבר לא פשוט למצוא שם את הדוקומנטציה לגירסא 3,
אם כי היא קיימת בפורומים,
הרבה כאלו שהתחילו פרוייקט וכשסיימו אותו כבר הייתה גירסא חדשה יותר.. שה לעבוד ככה לאורך שנים.
אבל,
בדקתי ויש אור ברצה המנהרה, הגירסא האחרונה, 4, כאן כדי להישאר, והמפתחים מודעים לעניין הזה לגמריי,
ותשאר כאן עד לפחות תחילת 2016.
ואולי יותר מזה, שזה סביר בהחלט.
בנוסף, למרות שהדוקומנטציה מעולה, קשה למצוא הרבה מידע לכיצד להימנע משימוש ב blade
מנוע הטמפלייטים שלהם.
לסיכום
פרימוורק מאוד מאוד מומלץ,
אחד הטובים שיש כרגע, מודולרי מאוד,
קוד מדהים נח וקל,
ציון סופי: 9/10
Codeigniter
מכונה ותיקה ופשוטה שתמיד עובדת
יתרונות
זה אולי הפרימוורק הכי פשוט, הרבה אנשים מצהירים שמאוד מאוד מרגישים בנוח איתו,
כל החידושים של הphp לא תמצאו שם, וזה עוזר לפשטות,
מאוד נח למתחילים.
דוקומנטציה פשוטה ומעולה, וגם מבנה הקבצים פשוט וברור.
יציבות
הגירסא האחרונה יצאה בינואר 2011 ועושה רושם שהיא כאן כדי להישאר,
פרימוורק מאוד מכובד שתמיד אפשר למצוא לו הרחבות גם אם לא דרך composer
ביצועים
מדווחים על ביצועים מרהיבים, אחד הפרימוורקים המהירים
חסרונות
יותר מידי פשוטה, משתמשים מתקדמים לא ימצאו פתרונות או כלים מובנים.
לא תמצאו שם שוב דבר מתקדם שמובנה בצורה טבעית,
למשל composer מה שסוגר בפנינו הרבה דלתות,
לא namespaces, ולא טסטים למינהם.
לסיכום
פרימוורק פשוט, הכל פשוט, מי שמתחיל בעולם ה php זה אחלה של פרימוורק להיכנס אליו,
אולי הכי מתאים למתחילים,
מערכת מאוד משוחררת לטוב ולרע, תוכלו לכתוב קוד עם דיזיין גרוע,
היא לא מגבילה אתכם לארכיטקטורה מסויימת.
עם דוקומנטציה מעולה, קהילה מאוד חזקה, וגירסא יציבה
הפך לאחד הפרימוורקים המדוברים.
ועם זאת, משתמשים שיתקדמו הלאה, יחסרו להם הרבה כלים.
ציון סופי: 7/10
Zend framework 2
המפתיע
יתרונות
יציבות - גם מבחינת הגירסאות וגם מי שעומד מאחורי הפרימוורק,
שזו כמובן חברת zend, החברה שמפתחת את php.
יחד עם הפרימוורק תקבלו תמיכה לאורך שנים, ובהחלט בחירה מאוד חכה למי שמתכנן פרוייקט ארוך טווח.
אפשר פשוט לסמוך על זה.
גמישות
כמובן, תמיכה ב composer, לא מעט פרימוורקים או פרוייקטים אחרים משתמשים במחלקות של זנד
הכל מופרד, דינאמי ו testable.
מבנה הקבצים
אני חייב לציין שהמבנה של הקבצים, והדרך בה הכל מסודר פשוט פנטסטי,
מופשט בצורה מאוד הגיונית,
כל עניין הבאנדלים שם בנוי מצוין, ואפשר למצוא כל דבר בקלות.
מה לגבי מתחילים?
משום מה זה נחשב פרימוורק עם עקומת למידה גבוהה, אבל להתחיל איתה דווקא מאוד פשוט וקל,
אני חושב שזה פרימוורק דווקא מאוד ידידותי למתחילים,
שמאוחר יותר יגלו כלים נוספים,
מבנה הקבצים תורם לכך רבות, ואי אפשר להסתבך
חסרונות
מערכת ראוטינג-
הכל טוב, אבל, מערכת ראוטינג מסובכת ורשלנית מאוד. לא דומה לשום דבר בפרימוורקים אחרים.
הרבה קוד במערכים עם הרבה מימדים כדי להגדיר נתיב.
כמובן שזה אפשרי, אבל יחסית זה מסובך ולא יפה לעין.
ביצועים
אחד הפרימוורקים שדורשים הרבה משאבים,
יש הטוענים שנקראות 5000 פונקציות בשביל hello world פשוט
דוקומנטציה
קל להתחיל איתה, אבל מי שרוצה להתמקצע, מחכה לו ספר של יותר מ1000עמודים
קהילה ומסחור
חברת zend לא מסתירה את הרצון שלה למכור לכם כלים נוספים שלה יחד עם הפריימוורק, שהוא כמובן בחינם,
אבל zend server למשל לא.
כמובן שזה לא חובה, וזה בסדר, אבל האווירה היא בניחוח של מסחור קל, ועל כן הקהילה לא הכי חמה.
לסיכום
אחד הפרימוורקים הכי טובים שיש, מי שרץ למרחקים וצריך עוצמה, זה הכיוון שלו,
כמובן גם לחברות ענק שדורשות תמיכה,
לא קשה בכלל למתחילים, ואפשר ללמוד ממנה המון
ציון סופי: 8.5/10
Symfony
המאכזב
הרבה חברות שביצעו פרוייקטים עם סימפוני מדווחים על חוויה נהדרת.
מגיע עם פרופייל מובנה ודוגמאות נהדרות כדי להתחיל.
יתרונות
קהילה
אחת קהילות המפותחות ביותר, אפשר למצוא מענה לכל דבר במהירות.
מאחורי הפרימוורק עומדת חברת sensiolabs שתומכת מאוד בקוד הפתוח.
יציבות
גירסא 2 יצאה ביולי 2011, וגם כאן עושה רושם שהיא תהיה איתנו הרבה זמן
דוקומנטציה
אחת הטובות, ניתן להוריד את הספר בחינם, וגם cookbook כל אחד מהם כ200 עמודים, תענוג לגמריי
חסרונות
עמוס בדברים עם סיכוי קטן מאוד להשתמש בהם, עקומת הלימוד גבוהה מאוד,
מבנה הקבצים לא נח בכלל (עבורי) פשוט לא ברור לי למה הם בחרו לארן את הקבצים בצורה הזאת, מה שקשה בהתחלה על למצוא דברים.
- קשה להימנע משימוע ב twig, אפשרי לגמריי ואפילו מופיע ב cookbook
אבל נראה כאילו הם מאוד רוצים שתשמש בזה
yaml - הרבה לא יסכימו, אבל הדבר הלא טבעי הזה, מיותר לגמריי.
ביצועים
לא טובים יותר מ zend 2
לסיכום
פרימוורק עמוס מאוד, יש בו הכל, אבל הכל מסובך יחסית ועקומת הלימוד לא פשוטה,
מי שרוצה לבנות איתו פרויקט מהיר, צריך ניסיון קודם,
אין לו יתרון מבחינת הביצועים, והשילוב ההיברידי שלו עם דברים אחרים לא תמיד מוצדק.
מבנה הקבצים הוא החיסרון המשמעותי בעניי, פשוט לא מרגיש טבעי,
עם זאת, ארכיטקטורה מאוד יפה, תגרום לכם לכתוב קוד מאוד איכותי,
בא עם באנדלים שימושיים מובנים, ויש לו כלים מעולים למפתח לראות מה קורה בכל עמוד ועמוד.
ציון סופי: 7.5/10
Phalcon
המעניין והמפתיע לרגע...
פרימוורק חדש שעושה הרבה רעש לאחרונה,
מה שעשו זה לכתוב פרימוורק ולקמפל אותו לשפת c, מה שהופך אותו למהיר, מהיר מאוד!
מי שמחפש ביצועים, שיפסיק לחפש,
פרימוורק שלא כולל הרבה דברים, mvc פשוט מאוד,
אבל שוב, הביצועים.
יתרונות
- סופר מהיר, זה הטענה המרכזית
- דוקומנטציה לא רעה
חסרונות
- הפרימוורק חדש, לא ברור לגבי התמיכה שלו בעתיד
- צריך להבין בלהתקין דברים על השרת, מי שאין לו שרת ייעודי משלו בבעיה
- כבר אמרנו שביצועים זה לא השיקול, מי שממש הולך על ביצועים, יכול לנסות את hiphop php
לסיכום
משהו חדש ומעניין, בהחלט שווה לעקוב אחריו, יכולה להיות שם התפתחות מעניינת,
אם כי חלק מהיתרונות והחסרונות לא ישתנו, אבל כל אחד והשיקול שלו לפרוייקט שלו.
ציון סופי: 5/10
ובכן.., זוהי דעתי מהניסיון שלי, גם מהצד הטכני, וגם מהצד של פיתוח ואיפיון מוצר, והתנהלות בפרוייקט.
אם אתם שואלים מה הפרימוורק הכי טוב,
התשובה היא תלוי בפרוייקט, אבל אם תלחצו עליי קצת אגלה לכם ש laravel הוא הפרימוורק הכי טוב,
ויהיה הבחירה הנכונה ברוב המקרים.
עם זאת, ולמרות מה שכותבים הרבה ברשת, הפרימוורק המפתיע (או שלא) הוא zend framework 2
שבהחלט אחד הפרימוורקים הטובים ושובר הרבה סטיגמות לגביו, כנראה אנשים פשוט לא אוהבים מסחור.
אבל זכרו את היתרונות שלו, והוא בהחלט בחירה מצויינת.
למתלבטים בניכם שעדיין חוקרים את השטח, מקווה שעזרתי להכווין אתכם ולחסוך זמן יקר,
אם כי כולנו בנויים שונה ותמיד שווה לחקור בעצמכם.
ועכשיו אשמח אם כל אחד ישתף מהניסיון שלו והחוויה שלו,
במה הוא מסכים ולא מסכים,
ואם אתם רוצים להוסיף משהו, בכיף.
תגובות לכתבה:
קשה לא להסכים עם כל שורה למעלה, חוץ מאולי אלה שהם העדפות אישיות.
אחלה סיקור. תודה :)
סיקור מדהים, עשית לי חשק לבחור ב Laravel.
נבדוק אותו בקרוב, תודה :)
סיקור מעולה. תודה. :-)
אולי כדאי רק להזכיר שלארוול בנוי על כמה רכיבים של Symfony. (זה לא באמת משנה יותר מדי, אבל וואטבר.)
בפרויקט האחרון שנמשך קרוב לשנתיים, כתבתי על CodeIgniter - ה- Framework הראשון שלי. לקראת סוף הפרויקט נשאלתי האם זה מסובך להחליף את ה- Framework , או במילים אחרות: כמה באחוזים מהקוד מבוסס על CodeIgniter וכמה כתוב Custom/Native-PHP . אחרי שבדקתי מצאתי שרק 5% מהקוד שנכתב בפרויקט משתמש ב Framework ו- 95% Custom .
הסיבה המרכזית: CodeIgniter תומך ב-PHP ענתיקה , לפני 5.3 , כלומר בכלל לא משתמש באובייקטים ולא מעודד שימוש בהם. לא נוח, לא יעיל ולא מודרני.
לפני כחצי שנה חיפשתי בעצמי איזה Framework אחר בשביל פרויקטים פרטיים ונתקלתי ב Laravel. זו היתה גם ההתקלות הראשונה שלי ב Eloquent ORM (מערכת מיפוי אובייקטי-רלציוני של Laravel) וגם במערכת הטמפלייטים המובנת (Blade) שלו.
אהבה ממבט ראשון.
אני כל כך אוהב להיכנס לקוד עצמו , ל-Classes ופשוט לקרוא את המטודות ולרפרף בהערות. מדהים. למדתי ושיפרתי את הקוד שלי בזכות זה. התאהבתי לגמרי ברעיון ה- ORM, למרות שאבדוק את נושא המהירות לפני שאתחייב לפתרון הזה ואהבתי מאוד גם את Blade. בניתי 2 פרויקטים קטנים ונהניתי מכל דקה. עכשיו כשאני צריך פונקציונאליות מסוימת אני לא ממציא את הגלגל אלה מחפש "איך עושים את זה ב- Laravel" ורק אם אין, אז ממציא.
מומלץ בחום זו לא מילה.
מצד שני, לא ניסיתי את האחרים אז קטונתי.
מצד שלישי, אני משוכנע שלא משנה איזה Framework אדרש להשתמש, ארגיש מאוד בבית. ברגע שעבדת עם לפחות 2 + Drupal + Wordpress ברמה של לכתוב Models/Plugins + כתבתה המון קוד Native, הכול קטן עליך.
רייסלין, קבל Thumbs Up ממני.
קלעת בול. מאמר מעולה.
ותודה על ההשקעה!